import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '@/views/HomeView.vue'
import LoginView from '@/views/LoginView.vue'


const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path: '/',
      name: '主页',
      component: () => import('../layout/Index.vue'),
      meta:{requiresAuth:true}, // 需要认证
      redirect:'/index',
      children:[
        {
          path:'/index',
          name:'首页',
          component:() => import('@/views/index/index.vue'),
          meta:{requiresAuth:true} // 需要认证
        },
          {
            path:'/sys/user',
            name:'用户管理',
            component:() => import('@/views/sys/user/index.vue'),
            meta:{requiresAuth:true} // 需要认证
          },
          {
            path:'/sys/role',
            name:'角色管理',
            component:() => import('@/views/sys/role/index.vue'),
            meta:{requiresAuth:true} // 需要认证
          },
          {
            path:'/sys/menu',
            name:'权限管理',
            component:() => import('@/views/sys/menu/index.vue'),
            meta:{requiresAuth:true} // 需要认证
          },
          {
            path:'/bsns/department',
            name:'部门管理',
            component:() => import('@/views/bsns/Department.vue'),
            meta:{requiresAuth:true} // 需要认证
          },
          {
            path:'/bsns/post',
            name:'岗位管理',
            component:() => import('@/views/bsns/Post.vue'),
            meta:{requiresAuth:true} // 需要认证
          },
          {
            path:'/userCenter',
            name:'个人中心',
            component:() => import('../views/userCenter/index.vue'), // 懒加载 LoginView 组件 调用才加载,
            meta:{requiresAuth:true} // 需要认证
          },

      ]
    },
    {
      path: '/about',
      name: 'about',
      component: () => import('../views/AboutView.vue'),
      meta:{requiresAuth:true} // 需要认证
    },
    {
      path:'/login',
      name:'login',
      component:() => import('../views/LoginView.vue'), // 懒加载 LoginView 组件 调用才加载
      meta:{unrequiresAuth:true}
    },

     // 这里是catch-all路由，处理所有未匹配的路径，重定向到首页
     {
      path: '/:pathMatch(.*)*', // 匹配所有未定义的路由
      redirect: '/index' // 重定向到首页
    }
  ],
})

// 全局路由守卫
router.beforeEach((to, from, next) => {
    // 如果目标路由需要认证，且用户没有 token
    if (to.meta.requiresAuth && !localStorage.getItem('token')) {
      // 跳转到登录页面
      next({ name: 'login' });
    } else {
      // 如果不需要认证，或者有 token，继续路由跳转
      next();
    }

  // 如果已登录，有token，进入登录页面自动跳转到首页
  const token = localStorage.getItem('token');
  // 1. 如果访问登录页面且已经有 token，则自动跳转到首页
  if (to.name === 'login' && token) {
    return next({ name: '主页' });
  }
});


export default router
